// * 路由拦截文件
import router from './router'
import service from './utils/request'
import store from './store'
// 进度条插件
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from './utils/auth'
import getPageTitle from '@/utils/get-page-title'

// 配置进度条插件
NProgress.configure({ showSpinner: false })

// 路由前置守卫
router.beforeEach(async(to, from, next) => {
  console.log('路由进入前')
  // 开启加载进度条
  NProgress.start()

  // 设置页面标题
  document.title = getPageTitle(to.meta.title)

  // 判断用户是否登录?  ->  登录 放行  -> 未登录 跳转登录页面
  // 1. 取出token值【登录凭证】
  const token = getToken()
  // 2. 判断是否有token
  if (token) {
    try {
      // 3. 有token&&没有用户信息  -> 获取用户信息
      if (!store.getters.nickName) {
        const { data } = await service.get('/adminUser/profile')
        // 4. 将用户信息存储到vuex中
        store.commit('user/SET_NICKNAME', data.nickName)
        console.log('获取了用户信息')
      }
      next()
    } catch (error) {
      // token失效【跳转登录, 清理Token】
      store.dispatch('user/resetInfo')
      next('/login')
    }
  } else {
    // 4. 无token  判断当前页面是否为登录【直接放行 / 跳转登录】
    if (to.path === '/login') {
      next()
    } else {
      next('/login')
    }
  }
})

// 路由后置守卫
router.afterEach(() => {
  // 关闭加载进度条
  NProgress.done()
  console.log('路由进去后')
})
